export const getUrlQuery = (url) => {
  if (url && url.indexOf("?") !== -1) {
    const args = new Object(); // 声明一个空对象

    // 获取URL中全部参数列表数据，第一个？号后面的都是query
    // 修复url上有多个？而被分割多段
    let query = "&" + url.replace(/[^?]*\?/, "");
    if (query.indexOf("#") !== -1) {
      query = query.split("#")[0];
    }
    const pairs = query.split("&"); // 以 & 符分开成数组
    for (let i = 0; i < pairs.length; i++) {
      const pos = pairs[i].indexOf("="); // 查找 "key=value" 对
      if (pos === -1) continue; // 若不成对，则跳出循环继续下一对
      const argName = pairs[i].substring(0, pos); // 取参数名
      let value = pairs[i].substring(pos + 1); // 取参数值
      value = decodeURIComponent(value); // 若需要，则解码
      args[argName] = value; // 存成对象的一个属性
    }
    return args;
  } else {
    return {};
  }
};

export const setUrlParams = (params) => {
  let paramStr = "";
  Object.keys(params).forEach((item) => {
    if (paramStr === "") {
      paramStr = `${item}=${params[item]}`;
    } else {
      paramStr = `${paramStr}&${item}=${params[item]}`;
    }
  });
  return paramStr;
};

export const getPageUrl = (openPath, params) => {
  console.log("源数据路径", openPath);
  let originPath = openPath;
  const pathIndex = originPath.indexOf("?");
  if (pathIndex > -1) {
    originPath = originPath.slice(0, pathIndex);
  }
  let urlQuery = getUrlQuery(openPath); // 解析参数
  urlQuery = {
    ...urlQuery,
    ...params,
  };
  const urlParams = setUrlParams(urlQuery); // 拼接参数
  return `${originPath}?${urlParams}`;
};
